www.goldedu.ru | протезирование all on 4 2398393f

Какая информация включена в заголовок транспортного уровня

Протокол TCP/IP ( Transmission Control Protocol/Internet Protocol ) представляет собой стек сетевых протоколов, повсеместно используемый для Интернета и других подобных сетей (например, данный протокол используется и в ЛВС). Название TCP/IP произошло от двух наиболее важных протоколов:

  • IP (интернет протокол) — отвечает за передачу пакета данных от узла к узлу. IP пересылает каждый пакет на основе четырехбайтного адреса назначения (IP-адрес).
  • TCP (протокол управления передачей) — отвечает за проверку корректной доставки данных от клиента к серверу. Данные могут быть потеряны в промежуточной сети. TCP добавлена возможность обнаружения ошибок или потерянных данных и, как следствие, возможность запросить повторную передачу, до тех пор, пока данные корректно и полностью не будут получены.

Основные характеристики TCP/IP:

  • Стандартизованные протоколы высокого уровня, используемые для хорошо известных пользовательских сервисов.
  • Используются открытые стандарты протоколов, что дает возможность разрабатывать и дорабатывать стандарты независимо от программного и аппаратного обеспечения;
  • Система уникальной адресации;
  • Независимость от используемого физического канала связи;

Принцип работы стека протоколов TCP/IP такой же как и в модели OSI, данные верхних уровней инкапсулируются в пакеты нижних уровней.

Если пакет продвигается по уровню сверху вниз — на каждом уровне добавляется к пакету служебная информация в виде заголовка и возможно трейлера (информации помещенной в конец сообщения). Этот процесс называется инкапсуляция. Служебная информация предназначается для объекта того же уровня на удаленном компьютере. Ее формат и интерпретация определяются протоколами данного уровня.

Если пакет продвигается по уровню снизу вверх — он разделяется на заголовок и данные. Анализируется заголовок пакета, выделяется служебная информация и в соответствии с ней данные перенаправляются к одному из объектов вышестоящего уровня. Вышестоящий уровень, в свою очередь, анализирует эти данные и также их разделяет их на заголовок и данные, далее анализируется заголовок и выделяется служебная информация и данные для вышестоящего уровня. Процедура повторяется заново пока пользовательские данные, освобожденные от всей служебной информации, не дойдут до прикладного уровня.

Не исключено, что пакет так и не дойдет до прикладного уровня. В частности, если компьютер работает в роли промежуточной станции на пути между отправителем и получателем, тогда объект, на соответствующем уровне, при анализе служебной информации определит, что пакет на этом уровня адресован не ему, в следствии чего, объект проведет необходимые мероприятия для перенаправления пакета к пункту назначения или возврата отправителю с сообщением об ошибке. Но так или иначе не будет осуществлять продвижение данных на верхний уровень.

Пример инкапсуляции можно представить следующим образом:

Рассмотрим каждые функции уровней

Прикладной уровень

Приложения, работающие со стеком TCP/IP, могут также выполнять функции представительного уровня и частично сеансового уровня модели OSI.

Распространенными примерами приложений являются программы:

  • Telnet
  • FTP
  • HTTP
  • WWW
  • Протоколы электронной почты (SMTP, POP3)

Для пересылки данных другому приложению, приложение обращается к тому или иному модулю транспортного модуля.

Транспортный уровень

Протоколы транспортного уровня обеспечивают прозрачную доставку данных меду двумя прикладными процессами. Процесс, получающий или отправляющий данные, с помощью транспортного уровня идентифицируется на этом уровне номером, который называется номером порта.

Таким образом, роль адреса отправителя и получателя на транспортном уровне выполняется номером порта. Анализируя заголовок своего пакета, полученного от межсетевого уровня, транспортный модуль определяет по номеру порта получателя по какому из прикладных процессов направленны данные и передает эти данные к соответствующему прикладному процессу.

Номер порта получателя и отправителя записывается в заголовок транспортным модулем отправляющим данные. Заголовок транспортного уровня содержит также и некоторую другую служебную информацию, и формат заголовка зависит от используемого транспортного протокола.

Средства транспортного уровня представляют собой функциональную надстройку над сетевым уровнем и решают две основных задачи:

  • обеспечение доставки данных между конкретными программами, функционирующими, в общем случае, на разных узлах сети;
  • обеспечение гарантированной доставки массивов данных произвольного размера.

В настоящее время в Интернет используются два транспортных протокола – UDP, обеспечивающий негарантированную доставку данных между программами, и TCP, обеспечивающий гарантированную доставку с установлением виртуального соединения.

Сетевой (межсетевой) уровень

Основным протоколом этого уровня является протокол IP, который доставляет блоки данных (дейтаграммы) от одного IP-адреса к другому. IP-адрес является уникальным 32-х битным идентификатором компьютера, точнее его сетевого интерфейса. Данные для дейтаграммы передаются IP модулю транспортным уровнем. IP модуль добавляет к этим данным заголовок, содержащий IP-адрес отправителя и получателя, и другую служебную информацию.

Таким образом, сформированная дейтаграмма передается на уровень доступа к среде передачи, для отправки по каналу передачи данных.

Не все компьютеры могут непосредственно связаться друг с другом, часто чтобы передать дейтаграмму по назначению требуется направить ее через один или несколько промежуточных компьютеров по тому или ному маршруту. Задача определения маршрута для каждой дейтаграммы решается протоколом IP.

Когда модуль IP получает дейтаграмму с нижнего уровня, он проверяет IP адрес назначения, если дейтаграмма адресована данному компьютеру, то данные из нее передаются на обработку модулю вышестоящего уровня, если же адрес назначения дейтаграммы чужой, то модуль IP может принять два решения:

  • Уничтожит дейтаграмму;
  • Отправить ее дальше к месту назначения, определив маршрут следования, так поступают промежуточные станции – маршрутизаторы.

Также может потребоваться на границе сетей, с различными характеристиками, разбить дейтаграмму на фрагменты, а потом собрать их в единое целое на компьютере получателя. Это также задача протокола IP.

Также протокол IP может отправлять сообщения – уведомления с помощью протокола ICMP, например, в случае уничтожения дейтаграммы. Более никаких средств контроля корректности данных, подтверждения или доставки, предварительного соединения в протоколе нет, эти задачи возложены на транспортный уровень.

Уровень доступа к среде

Функции этого уровня следующие:

  • Отображение IP-адресов в физические адреса сети. Эту функцию выполняет протокол ARP;
  • Инкапсуляция IP-дейтаграмм в кадры для передачи по физическому каналу и извлечение дейтаграмм из кадров, при этом не требуется какого-либо контроля безошибочной передачи, поскольку в стеке TCP/IP такой контроль возложен на транспортный уровень или на само приложение. В заголовке кадров указывается точка доступа к сервису SAP, это поле содержащее код протокола;
  • Определение метода доступа к среде передачи, т.е. способа, с помощью которого компьютеры устанавливает свое право на передачу данных;
  • Определение представления данных в физической среде;
  • Пересылка и прием кадра.
Читайте также:  Кластерные операционные системы microsoft

Рассмотрим инкапсуляцию на примере перехвата пакета протокола HTTP с помощью сниффера wireshark, который работает на прикладном уровне протокола TCP/IP:

Помимо самого перехваченного протокола HTTP, на основании стека TCP/IP сниффер описывает каждый нижележащий уровень. HTTP инкапсулируется в TCP, протокол TCP в IPv4, IPv4 в Ethernet II.

Транспортный уровень модели OSI (равно как и стека протоколов TCP/IP) обеспечивает следующие возможности:

  1. Отслеживание индивидуальных сеансов общения между приложениями на передающем и принимающем устройствах.
  2. Сегментация данных (разбиение больших порций данных на сегменты для индивидуальной отсылки по сети, сборка этих сегментов после получения).
  3. Идентификация приложений, передающих и принимающих данные.

Прежде чем приступить к обсуждению транспортного уровня, следует вспомнить, какую роль в иерархической модели он занимает:

Данные порождаются на уровне приложений конкретной пользовательской программой и передаются на транспортный уровень. Программа, как правило, знает ip адрес (или доменное имя) целевого устройства и предполагает, что на том конце должно быть запущено приложение, поддерживающее тот же самый протокол уровня приложений, что и на передающем устройстве. Все нюансы передачи в идеале должны быть сокрыты от разработчика, чтобы программист не занимался такими делами, как поиск маршрута к целевому устройству, надёжность доставки, установка соединений и т.п. Транспортный уровень — это первый уровень, который встречает данные приложения и начинает процедуру по их подготовке к передаче.

На транспортном уровне функционируют как правило два протокола: TCP и UDP. Об этих протоколах детально можно почитать в отдельных статьях, в данной же статье обсуждаются общие принципы транспортного уровня и краткие характеристики этих протоколов.

Сегментация

Первая задача, которую решают оба этих протокола — сегментация данных. Когда программист пишет очередную программу, или разрабатывает новый протокол уровня приложений, он передаёт данные теми порциями, которыми ему удобно. Например, пользователь запрашивает по протоколу FTP файл размером 10 МБ, FTP сервер начинает отправку файла. При этом у сети есть ряд ограничений на объём передаваемой информации. Наиболее важное из них — это MTU (Maximum transmission unit) — характеристика уровня Data Link, означающая максимальный размер фрейма, который можно передать по сети. Естественно, что 10 мегабайтный файл не получится передать одним куском, нужно разбиение его на отдельные сегменты. Так же естественно, что программист не захочет заниматься такой типовой задачей, так как она не связана напрямую с логикой работы самого приложения. Вот тут к нам на помощи и приходит транспортный уровень.

  1. Он берёт кусок данных с уровня приложений (в нашем примере те самые 10 мегабайт), разбивает его на сегменты подходящего для передачи размера,
  2. К каждому может добавить информацию о порядковом номере сегмента для сборки в дальнейшем (если это протокол TCP)
  3. Добавляет к каждому сегменту отдельный заголовок транспортного уровня
  4. Передаёт сегмент ниже на сетевой уровень, где каждый сегмент обрабатывается индивидуально и запаковывается, например, в отдельный IP пакет.

Идентификация приложений

Вторая важнейшая задача, лежащая на протоколах транспортного уровня — адресация индивидуальных приложений в масштабах передающего или принимающего устройств. Например, на одном сервере может работать несколько сетевых приложений: веб сервер, почтовый сервер, ssh сервер и т.п. Аналогично, пользователь может запустить на своём компьютере одновременно браузер, почтовую программу, skype и т.п. — задача транспортного уровня, передать полученную узлом информацию нужному приложению на этом узле. То есть, сетевой уровень нужен для того чтобы информация достигла узла, а транспортный — для того чтобы информация попала нужному приложению в пределах этого узла. Для такой идентификации приложений транспортерные протоколы (как TCP, так и UDP) используют номера портов: каждое приложение, желающее работать с сетью сообщает операционной системе о своих планах и регистрирует за собой какой-то номер порта. В последствии, когда на компьютер придут данные, транспортный уровень заглянет в поле «номер порта получателя» и передаст эти данные соответствующему приложению.

Порт — это числовая величина в пределах от 0 до 65535, условно диапазоны портов делятся на три категории:

  1. Хорошо известные порты (well-known ports) — c 0 по 1023 — эти порты резервируются для самых популярных протоколов и приложений, которые исторически заняли свою нишу. Например, любой веб сервер обычно работает на 80-м порту, почтовый протокол SMTP использует 25 порт, SSH — 22-ой.
  2. Зарегистрированные порты (registered ports) — с 1024 по 49151 — эти порты могут использоваться менее популярными приложениями, например, сетевыми играми, или более «молодыми» средствами связи, например, Skype. Тем не менее, и в этом блоке есть множество портов, которые можно назвать известными. Например, порт 8080 часто используется как альтернатива порту 80 для HTTP сервера.
  3. Динамические или частные порты (dynamic or private ports) — с 49152 по 65535 — так же могут использоваться малоизвестными приложениями, но основное их использование — в качестве порта для клиентских программ. Например, когда вы обращаетесь к веб-серверу, ваш браузер выступает в качестве клиента. При этом на сервере вы будете обращаться к 80-му порту, а данные, приходящие в ответ вашему браузеру идут с 80-го порта на какой-то порт из этого диапазона, который динамически назначился вашему браузеру операционной системой.
Читайте также:  Почему у человека бегают глаза при разговоре

На самом деле, разделение портов на диапазоны весьма условно, но уважающий себя администратор должен знать наиболее известные номера портов из диапазона с 0 по 1023. Обратите внимание, порты существуют и в TCP и в UDP, в каждом из этих диапазонов каждый порт может использоваться обоими протоколами независимо друг от друга.

Отслеживание индивидуальных сеансов общения между приложениями (сессии)

Эта функция относится только к протоколу TCP. Перед началом передачи полезных данных узел, инициирующий соединение открывает сессию с узлом получателем, чтобы убедиться, что получатель существует и готов принимать данные. Далее все полезные данные передаются в рамках установленной сессии (соединения) и после завершения такой передачи сессия закрывается.

TCP и UDP

Итак, мы подошли к обсуждению двух основных протоколов, работающих на транспортном уровне.

TCP (Transmission control protocol) — протокол, транспортного уровня, обеспечивающий надёжную доставку данных. Основные характеристики TCP:

  1. Установка соединения (сессии)
  2. Надёжная доставка (автоматическая пересылка потерявшихся сегментов)
  3. Доставка сегментов и сборка их в том же порядке, в каком происходило сегментирование (так как разные сегменты запаковываются в индивидуальные пакеты, которые теоретически могли идти по сети разными маршрутами, в итоге сегменты могут прийти не в том порядке, в котором отправлялись. В этом случае TCP, тем не менее, соберёт их в правильном порядке).
  4. Контроль потока (TCP может уменьшать скорость передачи информации в случае, если получатель не справляется с приёмом по причине ограниченности ресурсов).

Все эти характеристики позволяют снять множество задач с программиста, разрабатывающего протокол уровня приложений: ему не надо заботиться о надёжной доставке, о порядке обработки сегментов, об установке соединений. Тем не менее, благодаря этим функциям, TCP замедляет передачу сообщения. Это происходит по нескольким причинам: во-первых, узел получателя будет ждать, когда придут все отправленные сегменты, до того, как передать их приложению, во-вторых, сами сегменты содержат множество служебной информации, для того, чтобы обеспечить весь этот богатый функционал. Часто приложению нужна просто быстрая доставка и нет никаких требований по надёжности. Тут на помощь приходит протокол UDP. Его особенности — противоположность особенностям TCP. UDP отличается:

  1. Отсутствием сессий.
  2. Ненадёжной доставкой.
  3. Отсутствием упорядочивания сегментов
  4. Отсутствием контроля за скоростью передачи
  5. Максимально возможной скоростью передачи данных за счёт всего вышеперечисленного.

UDP используется там, где важна скорость. Давайте рассмотрим два примера:

  1. Человек загружает страничку, или, что более интересно, архив файла с сайта. Если потеряется хоть один сегмент, то скачивание архива не имеет смысла, так как он не распакуется. Точно так же, HTML вёрстка страницы не будет иметь никакого смысла, если из середины убрать некоторый кусок текста. В этом случае конечно используется TCP
  2. Человек разговаривает по IP-телефону. Каждый кусок речевой информации должен приходить ровно в то время, когда его ожидают услышать (то есть между предыдущим и последующим), тут важно взаимодействие именно в реальном времени. Если какой-то кусок не дошёл, то проще просто игнорировать этот факт, чем ждать, когда его перешлют, так как в любом случае, когда он пришёл бы повторно, он был бы уже не нужен. В этой ситуации используется UDP.

Каждый протокол уровня приложений подразумевает использование определённого протокола транспортного уровня. Например, HTTP, SMTP, Telnet, SSH всегда работают по TCP. Radius, TFTP, RIP — всегда работают по UDP. Есть некоторые протоколы, которые в зависимости от ситуации могут работать как по TCP, так и по UDP. Например отправлять некоторую срочную информацию по UDP, а периодические важные обновления — по TCP.

Итоги

На транспортном уровне используются в основном два протокола: TCP и UDP. Оба этих протокола умеют:

  1. Разбивать данные на сегменты
  2. Идентифицировать передающее и принимающее приложения при помощи портов

Помимо этого, TCP умеет:

  1. Работать с сессией.
  2. Обеспечивать надёжную доставку.
  3. Делать упорядочивание и сборку сегментов при получении.
  4. Управлять скоростью передачи данных

Транспортный уровень это 4 уровень в модели взаимодействия открытых систем и 3 уровень в модели TCP/IP.

p, blockquote 1,0,0,0,0 —>

p, blockquote 2,0,0,0,0 —>

На канальном уровне мы научились передавать данные между компьютерами, либо по проводам, либо без проводов. На сетевом уровне узнали как строятся составные сети на основе разных технологий канального уровня.

p, blockquote 3,0,0,0,0 —>

p, blockquote 4,0,0,0,0 —>

Есть задача, на компьютер который подключен к составной сети приходит пакет. На компьютере работает много сетевых приложений, это может быть электронная почта, скайп, браузер и какие-нибудь другие приложения. На необходимо понять, какому приложению нужно отправить этот пакет. Взаимодействие сетевых приложений и занимается транспортный уровень.

p, blockquote 5,0,0,0,0 —>

p, blockquote 6,0,0,0,0 —>

Задачи транспортного уровня (ТУ)

Задача транспортного уровня это передача данных между процессами на разных хостах. На транспортном уровне необходимо обеспечить адресацию. Нам нужно знать для какого процесса назначен тот или иной пакет. Важной задачей ТУ является обеспечение надежности передачи данных. ТУ может предоставлять надежность более высокую, чем надежность сети которая используется для передачи данных. С другой стороны ТУ может и не предоставлять дополнительный уровень надежности, все зависит от требований конкретного приложения.

p, blockquote 7,0,0,0,0 —>

Модель OSI

Полностью модель взаимодействия открытых систем выглядит так, как показано на рисунке ниже.

p, blockquote 8,0,1,0,0 —>

p, blockquote 9,0,0,0,0 —>

Отдельно выделяются хосты, это устройства, где работают полезные пользовательские программы. И сетевое оборудование, такое как маршрутизаторы, коммутаторы и другие сетевые устройства. На сетевом оборудовании есть только 3 уровня: физический, канальный и сетевой. Уровни начиная с транспортного работают только на хостах.

Читайте также:  Как сбросить отпечаток пальца на самсунг

p, blockquote 10,0,0,0,0 —>

Важной особенностью транспортного уровня является прямое взаимодействие с транспортным уровнем на другом компьютере.

На всех остальных уровнях взаимодействие идет, по звеньям цепи, данные передаются от одного сетевого устройства к другому и так пока не дойдут до нужного хоста.

p, blockquote 12,0,0,0,0 —>

p, blockquote 13,0,0,0,0 —>

Транспортный уровень обеспечивает сквозное соединение. Между двумя взаимодействующими хостами может находиться большое количество сетевых устройств, но они не влияют на работу транспортного уровня, поэтому ТУ называется сетенезависимым. Он позволяет скрыть от разработчиков приложений детали сетевого взаимодействия.

p, blockquote 14,0,0,0,0 —>

Адресации. Порты

Для адресации на транспортном уровне используются порты. Это просто число от 1 до 65 535. Номера у процессов на одном хосте не должны повторяться, иначе мы не сможем понять к какому конкретно процессу отправить пришедший пакет.

p, blockquote 15,0,0,0,0 —>

Записываются порты, следующим образом 192.168.1.3 :80. Выделенные жирным это IP-адрес, а 80 — это порт. Чтобы в интернете подключиться к какому-нибудь сервису и к службе необходимо указать ip адрес и соответствующий порт.

p, blockquote 16,1,0,0,0 —>

Типы портов

Если мы хотим подключиться к какому-нибудь сервису в интернете нам нужно знать не только ip адрес, но и порт. Поэтому договорились, что популярные сервисы будут работать на одних и тех же портах. Эти порты называются хорошо или широко известные порты 1-1024.

p, blockquote 17,0,0,0,0 —>

p, blockquote 18,0,0,0,0 —>

Ограничение, запускать сервисы работающие на хорошо известных портам могут только пользователи с правами администратора.

Если вы разрабатываете свой сервис, и хотите, чтобы пользователи знали на каком порту он работает, вы можете зарегистрировать этот порт в организации IANA и выбрать себе порт из диапазона зарегистрированные. Но нужно смотреть, чтобы этот порт не был зарегистрирован никаким другим разработчиком приложения.

p, blockquote 20,0,0,0,0 —>

Использование, как хорошо известных портов, так и зарегистрированных это просто договоренность. Например Web сервер может работать не только на 80 порту, но и на любом другом. Часто используется support номер 88 или 8080. При этом, когда вы подключаетесь к такому веб-серверу Вы должны указать порт на котором он работает.

p, blockquote 21,0,0,0,0 —>

Динамические порты назначаются операционной системой клиентом. Клиенту, точно также, как и серверу необходим не только ip адрес, но и порт. В случае с клиентом номер порта не имеет принципиального значения, так как клиент отправляет запрос серверу и сервер в запросе увидит, как ip адрес клиента, так и его порт. Поэтому, операционная система назначает клиентам порты автоматически из диапазона динамических портов.

p, blockquote 22,0,0,0,0 —>

IP-адреса и порты

Рассмотрим пример сетевого взаимодействия с использованием ip адресов и портов. Есть сервер на котором работает web сервер на порту №80. И есть клиент, который хочет подключиться к этому веб серверу.

p, blockquote 23,0,0,0,0 —>

Клиент открывает браузер, операционная система автоматически назначает ему порт 50298. Браузер выполняет соединение с веб сервером, запрашивает веб страницу. Web сервер отправляет ему эту страницу.

p, blockquote 24,0,0,1,0 —>

p, blockquote 25,0,0,0,0 —>

Предположим, что дальше клиент решил открыть еще один браузер и зайти на тот же самый сервер, на ту же самую веб-страницу. Операционная система автоматически назначила браузеру порт 50302. Браузер соединяется с веб-сервером, Web сервер видит в запросе не только ip клиента, но и его порт. Поэтому, когда приходит ответ он отправляется именно в тот браузер, из которого был направлен запрос, а не в другой браузер. Благодаря использованию не только ip адресов, но и портов, никакой путаницы не будет.

p, blockquote 26,0,0,0,0 —>

p, blockquote 27,0,0,0,0 —>

Надежность на транспортном уровне

Важной особенностью ТУ является то, что он может обеспечить более высокую надежность, чем сеть которая используется для передачи данных. В настоящее время это эффективно на практике, потому что используются надежные каналы связи, ошибки в этих КС происходят редко. Поэтому можно строить сеть ненадежную, которая будет стоить дешево, а ошибки, так как они возникают редко, можно исправлять программно на хостах транспортного уровня.

p, blockquote 28,0,0,0,0 —>

В модели OSI предусмотрено много различных вариантов обеспечения надежности на транспортном уровне, но на практике, чаще всего используются две возможности.

p, blockquote 29,0,0,0,0 —>

  • Во-первых ТУ может гарантировать доставку данных. Так как сеть у нас не надежная, некоторые пакеты могут потеряться. Чтобы гарантировать доставку ТУ использует подтверждение. Если через определенное время не пришло подтверждение, то тот же самый пакет отправляется снова.
  • Во-вторых ТУ может гарантировать порядок следования сообщений. Так как у нас сеть с пакетной коммутацией, разные пакеты могут пойти через разные маршрутизаторы. И может случиться так, что пакет, который был отправлен позже придет к получателю раньше. Чтобы решить эту проблему на ТУ используется нумерация сообщений.

Протоколы транспортного уровня TCP/IP

В стеке протоколов tcp на ТУ используется два протокола TCP и UDP. Tcp это протокол, который обеспечивает надежность доставки. Он обеспечивает гарантию доставки и гарантию порядка следования сообщений. Протокол udp не гарантирует доставку данных, но зато работает быстрее, чем протокол tcp.

p, blockquote 30,0,0,0,0 —>

p, blockquote 31,0,0,0,0 —>

Заключение

Для взаимодействия с ТУ используется интерфейс сокетов. Многие сетевые приложения взаимодействуют с ТУ. Хотя сейчас все более популярными становятся разработка сетевых приложений, которые взаимодействуют не с транспортным, а с прикладным уровнем.

Ссылка на основную публикацию
Как удалить много страниц в ворде сразу
Бывает такое, что пользователи оказываются в непростом положении, не понимая, как выйти из тяжелого положения. Некоторые люди даже не могут...
Как скопировать блок схему в ворде
Встроенные программные инструменты MS Word предоставляют широкие возможности для построения и структурирования разного рода Блок-схем. С помощью различных форм и...
Как скопировать штриховку в автокаде
Привет всем читателям блога прораба, я это сделал! Почти год, собирался создать какой-нибудь инфопродукт. Постоянно были обстоятельства, которые мешали мне...
Как удалить облако майл ру с телефона
Действие вызывает много вопросу пользователей. В результате в сети встречаются порталы, предлагающие дополнительно скачивать и устанавливать специальные расширения для стирания...
Adblock detector